package sh.grapendaal.tsuushin.module.uno.engine.service;

import java.util.List;

import sh.grapendaal.tsuushin.module.uno.engine.domain.Player;
import sh.grapendaal.tsuushin.module.uno.engine.event.listener.GameEventListener;

public interface PlayerService extends GameEventListener {
	
	void initialize();

	int getNumPlayers();

	List<Player> getPlayers();

	boolean addPlayer(Player player);

	boolean removePlayer(Player player);

	boolean hasPlayer(Player player);

	Player getPlayerByNickname(String nickname);

	Player getCurrentPlayer();

	Player nextPlayer();

	Player peekNextPlayer();

	void reverseRotation();

}
